package com.xingshang.pojo;

import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

/**
 * @TableName user
 * 该类映射到数据库中的 "user" 表
 */
@TableName(value ="user")
@Data
public class User implements Serializable {

    /**
     * 用户的唯一标识符，数据库表中的 userid 字段
     */
    @TableId
    private Integer userid;


    private String openid;

    /**
     * 用户名，数据库表中的 username 字段
     */
    private String username;

    /**
     * 用户密码，数据库表中的 password 字段
     */
    private String password;

    /**
     * 用户的电子邮件地址，数据库表中的 email 字段
     */
    private String email;

    /**
     * 用户的电话号码，数据库表中的 phoneNumber 字段
     */
    private String phoneNumber;


    private String nickname;

    /**
     * 用户的头像图片路径，数据库表中的 profilePicture 字段
     */
    private String profilePicture;

    /**
     * 用户性别，可能为 String 或 Integer 类型，数据库表中的 gender 字段
     * 可通过不同的值表示性别，如 "男" 或 "女" 等
     */
    private Object gender;

    /**
     * 用户的出生日期，数据库表中的 dob 字段
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dob;

    /**
     * 用户的注册日期，数据库表中的 registerDate 字段
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date registerDate;

    /**
     * 用户的最后登录时间，数据库表中的 lastLogin 字段
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastLogin;

    /**
     * 用户账户是否激活，数据库表中的 isActive 字段
     * 0 表示未激活，1 表示已激活
     */
    private Integer isActive;

    /**
     * 用户是否已删除，数据库表中的 isDeleted 字段
     * 0 表示未删除，1 表示已删除
     */
    private Integer isDeleted;

    /**
     * 用户的订阅类型，数据库表中的 subscriptionType 字段
     * 例如，可能是 "VIP"、"普通" 等
     */
    private Object subscriptionType;

    /**
     * 用户的偏好设置，数据库表中的 preferences 字段
     * 可能是 JSON 格式，存储用户的自定义设置
     */
    private Object preferences;

    /**
     * 用户的积分，数据库表中的 points 字段
     * 代表用户的奖励积分，通常用于兑换某些服务或商品
     */
    private Integer points;



    /**
     * 乐观锁版本字段，用于 MyBatis-Plus 实现乐观锁
     * 每次更新时，version 字段会自动递增，防止并发更新冲突
     */
    @Version
    private Integer version;

    /**
     * 序列化 ID，用于类的序列化兼容性检查
     * 保证对象的序列化与反序列化的一致性
     */
    private static final long serialVersionUID = 1L;
}
